﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using DevExpress.Utils;
using DevExpress.XtraBars.Helpers;
using DevExpress.LookAndFeel;

namespace PRE
{
    public partial class FrmMain : DevExpress.XtraBars.Ribbon.RibbonForm
    {

        #region Variable
        private const string STR_Nguoidung = "";
        public static UTL.Session _sss = new UTL.Session();
        #endregion

        #region Inits

        #region FrmMain
        public FrmMain()
        {
            InitializeComponent();
            InitSkinGallery();
        }

        #endregion

        #region FrmMain_Load

        private void FrmMain_Load(object sender, EventArgs e)
        {
            bbiDangnhap_ItemClick(sender, null);
            timer1_Tick_1(sender, null);
        }

        #endregion

        #endregion

        #region Functions

        #region Hiển thị thời gian
        private void timer1_Tick_1(object sender, EventArgs e)
        {
            bsiThoigian.Caption = "Thời gian: " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;
        }
        #endregion

        #endregion

        #region Menu chính

        #region Hệ thống

        #region Đăng nhập
        private void bbiDangnhap_ItemClick(object sender, ItemClickEventArgs e)
        {
            Login.FrmLogin x = new Login.FrmLogin();
            x.ShowDialog();

            string _quyen = _sss.Role.ToString();

            if (_sss.Login)
            {
                if (_quyen == "Admininistrator")
                {
                    bsiUser.Caption = "Xin chào: " + _sss.Name;
                    bsiQuyen.Caption = "Quyền: " + _sss.Role;
                    rib_MuonTraSach.Visible = true;
                    rib_Sach.Visible = true;
                    rib_BaoCaoThongKe.Visible = true;
                    rib_DocGia.Visible = true;
                }
                else if (_quyen == "Manager")
                {
                    bsiUser.Caption = "Xin chào: " + _sss.Name;
                    bsiQuyen.Caption = "Quyền: " + _sss.Role;
                    rib_MuonTraSach.Visible = true;
                    rib_Sach.Visible = false;
                    rib_BaoCaoThongKe.Visible = true;
                    rib_DocGia.Visible = true;
                    bbi_User.Visibility = BarItemVisibility.Never;
                    bbi_VaiTro.Visibility = BarItemVisibility.Never;
                    bbi_Capnhatthedocgia.Visibility = BarItemVisibility.Never;
                    bbi_Xemthongtindocgia.Visibility = BarItemVisibility.Never;  
                }
                else if (_quyen == "User")
                {
                    bsiUser.Caption = "Xin chào: " + _sss.Name;
                    bsiQuyen.Caption = "Quyền: " + _sss.Role;
                    rib_MuonTraSach.Visible = false;
                    rib_Sach.Visible = false;
                    rib_BaoCaoThongKe.Visible = false;
                    rib_DocGia.Visible = false;
                    bbi_User.Visibility = BarItemVisibility.Never;
                    bbi_VaiTro.Visibility = BarItemVisibility.Never;
                }
                else if (_quyen == "Gest")
                {
                    bsiUser.Caption = "Xin chào: " + _sss.Name;
                    bsiQuyen.Caption = "Quyền: " + _sss.Role;
                    rib_MuonTraSach.Visible = false;
                    rib_Sach.Visible = false;
                    rib_BaoCaoThongKe.Visible = false;
                    rib_DocGia.Visible = false;
                    bbi_User.Visibility = BarItemVisibility.Never;
                    bbi_VaiTro.Visibility = BarItemVisibility.Never;
                }
            }
            else
            {
                ribG_NguoiDung.Visible = false;
                rib_MuonTraSach.Visible = false;
                rib_Sach.Visible = false;
                rib_BaoCaoThongKe.Visible = false;
                rib_DocGia.Visible = false;
            }
        }
        #endregion

        #region Đăng nhập lại
        private void bbi_Dangnhap_ItemClick(object sender, ItemClickEventArgs e)
        {
            try
            {
                if (MessageBox.Show("Thoát ứng dụng và đăng nhập lại ?", "UIS - Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
                {
                    try
                    {
                        System.Diagnostics.Process.Start(Application.ExecutablePath);
                        Application.Exit();
                    }
                    catch { }
                }
            }
            catch { }
        }
        #endregion

        #region Thoát
        private void btn_Close_ItemClick(object sender, ItemClickEventArgs e)
        {
            try
            {
                if (MessageBox.Show("Thoát ứng dụng ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
                Application.Exit();
            }
            catch { }
        }
        #endregion

        #region Đổi mật khẩu

        private void btn_DoiMatKhau_ItemClick(object sender, ItemClickEventArgs e)
        {
            Login.FrmChangePassword x = new Login.FrmChangePassword();
            x.ShowDialog();
        }
        #endregion

        #region Người dùng
        private void bbi_User_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmUser) return;
            var frm = new Catalog.FrmUser() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Quyền
        private void bbi_VaiTro_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmVaitro) return;
            var frm = new Catalog.FrmVaitro() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Giao diện
        void InitSkinGallery()
        {
            SkinHelper.InitSkinGallery(rgbiSkins, true);
        }
        #endregion

        #region Đóng / Mở tab bằng memu

        #region Đóng cửa sổ này
        private void mnuCloseThis_Click_1(object sender, EventArgs e)
        {
            try
            {
                Form frm = xtraTabbedMdiManager.SelectedPage.MdiChild as Form;
                if (frm != null)
                {
                    frm.Close();
                }
            }
            catch { }
        }
        #endregion

        #region Đóng tất các cửa sổ khác
        private void mnuCloseButThis_Click_1(object sender, EventArgs e)
        {
            try
            {
                Form frm = xtraTabbedMdiManager.SelectedPage.MdiChild as Form;
                foreach (Form frmOther in xtraTabbedMdiManager.MdiParent.MdiChildren)
                    if (frmOther != frm)
                        frmOther.Close();
            }
            catch { }
        }

        #endregion

        #region Đóng tất cả
        private void mnuCloseAll_Click_1(object sender, EventArgs e)
        {
            try
            {
                foreach (Form frmOther in xtraTabbedMdiManager.MdiParent.MdiChildren)
                    frmOther.Close();
            }
            catch { }
        }
        #endregion

        #region private void xtraTabbedMdiManager_MouseUp(object sender, MouseEventArgs e)
        private void xtraTabbedMdiManager_MouseUp(object sender, MouseEventArgs e)
        {
            try
            {
                if (e != null)
                {
                    if (e.Button == MouseButtons.Right && xtraTabbedMdiManager.SelectedPage != null)
                    {
                        Rectangle rec = xtraTabbedMdiManager.SelectedPage.TabControl.ViewInfo.SelectedTabPageViewInfo.Bounds;
                        if (e.X > rec.Left && e.X < rec.Right && e.Y > rec.Top && e.Y < rec.Bottom)
                        {
                            if (xtraTabbedMdiManager.Pages.Count == 1)
                                mnuCloseButThis.Enabled = false;
                            else
                                mnuCloseButThis.Enabled = true;
                            cmsCloseTab.Show(new Point(MousePosition.X + 3, MousePosition.Y + 3));
                        }
                    }
                }
            }
            catch { }
        }
        #endregion
        #endregion
    
        #endregion

        #region Quản Lý Mượn Trả Sách

        #region Quản Lý Mượn Sách

        #region Lập Phiếu Mượn

        private void bbi_LapPhieuMuon_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmPhieuMuon) return;
            var frm = new Catalog.FrmPhieuMuon() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Gia Hạn Sách Mượn

        private void bbi_GiaHanMuon_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmGiaHanMuon) return;
            var frm = new Catalog.FrmGiaHanMuon() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Thêm Sách Mượn

        private void bbi_ThemSachMuon_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmThemSachMuon) return;
            var frm = new Catalog.FrmThemSachMuon() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #endregion

        #region Quản Lý Trả Sách

        #region Nhận Trả Sách

        private void bbi_NhanTraSach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmNhanTraSach) return;
            var frm = new Catalog.FrmNhanTraSach() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Lập Biên Lai Phạt

        private void bbi_LapPhieuPhat_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmBienLaiPhat) return;
            var frm = new Catalog.FrmBienLaiPhat() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #endregion

        #endregion

        #region Quản lý sách

        #region Danh Mục Cuốn Sách
        private void bbi_CapNhatCuonSach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmCuonSach) return;
            var frm = new Catalog.FrmCuonSach() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh Mục Đầu Sách
        private void bbi_CapNhatDauSach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmDauSach) return;
            var frm = new Catalog.FrmDauSach() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh Mục Kệ Sách
        private void bbi_CapNhatKeSach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmKeSach) return;
            var frm = new Catalog.FrmKeSach() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh Mục Thể Loại Sách
        private void bbi_CapNhatTheLoai_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTheLoai) return;
            var frm = new Catalog.FrmTheLoai() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh mục tác giả
        private void bbi_CapNhatTacGia_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTacGia) return;
            var frm = new Catalog.FrmTacGia() { MdiParent = this };

            frm.Show();
        }
        #endregion
    
        #region Danh Mục Nhà Xuất Bản
        private void bbi_CapNhatNhaXuatBan_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmNhaXB) return;
            var frm = new Catalog.FrmNhaXB() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh Mục Trạng Thái Sách

        private void bbi_Capnhattrangthaisach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTrangThai) return;
            var frm = new Catalog.FrmTrangThai() { MdiParent = this };

            frm.Show();
        }


        #endregion

        #endregion

        #region Quản Lý Báo Cáo Thống Kê

        #region Quản Lý Báo Cáo

        #region Danh Sách Sách Đang Được Mượn

        private void bbi_DSsachdangmuon_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmDanhSachSachMuon) return;
            var frm = new Catalog.FrmDanhSachSachMuon() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Danh Sách Đọc Giả Bị Khóa Thẻ
        private void bbi_DSdocgiabikhoathe_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmDanhSachTheDocGiaBiKhoa) return;
            var frm = new Catalog.FrmDanhSachTheDocGiaBiKhoa() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh Sách Đọc Giả Mượn Quá Hạn
        private void bbi_DSdocgiamuonquahan_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmDanhSachTheDocGiaMuonSachQuaHan) return;
            var frm = new Catalog.FrmDanhSachTheDocGiaMuonSachQuaHan() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Danh sách Đọc Giả Bị Phạt
        private void bbi_DSdocgiabiphat_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmDanhSachTheDocGiaBiPhat) return;
            var frm = new Catalog.FrmDanhSachTheDocGiaBiPhat() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #endregion

        #region Quản Lý Thống Kê

        #region Thống Kê Số Lượng Sách Mượn

        #region Theo Thời Gian
        private void bbi_Theothoigian_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachMuonTheoNgay) return;
            var frm = new Catalog.FrmTKSoLuongSachMuonTheoNgay() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Theo Tháng
        private void bbi_Theothang_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachMuonTheoThang) return;
            var frm = new Catalog.FrmTKSoLuongSachMuonTheoThang() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Theo Quý
        private void bbi_Theoquy_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachMuonTheoQuy) return;
            var frm = new Catalog.FrmTKSoLuongSachMuonTheoQuy() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Theo Năm
        private void bbi_Theonam_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachMuonTheoNam) return;
            var frm = new Catalog.FrmTKSoLuongSachMuonTheoNam() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #endregion

        #region Thống Kê Số Lượng Sách

        #region Theo Đầu Sách

        private void bbi_Theodausach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachTheoDauSach) return;
            var frm = new Catalog.FrmTKSoLuongSachTheoDauSach() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Theo Kệ Sách
        private void bbi_Theokesach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachTheoKeSach) return;
            var frm = new Catalog.FrmTKSoLuongSachTheoKeSach() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Theo Thể Loại
        private void bbi_Theotheloai_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachTheoTheLoai) return;
            var frm = new Catalog.FrmTKSoLuongSachTheoTheLoai() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Theo Nhà Xuất Bản
        private void bbi_Theonhaxuatban_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTKSoLuongSachTheoNhaXuatBan) return;
            var frm = new Catalog.FrmTKSoLuongSachTheoNhaXuatBan() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #endregion

        #endregion

        #endregion

        #region Quản Lý Đọc Giả

        #region Danh Mục Đọc Giả

        #region Cập Nhật Đọc Giả

        private void bbi_Capnhatthedocgia_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmTheDocGia) return;
            var frm = new Catalog.FrmTheDocGia() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #region Cấp Thể Đọc Giả

        private void bbi_Capthedocgia_ItemClick(object sender, ItemClickEventArgs e)
        {
            Catalog.FrmCapTheDocGia frm = new Catalog.FrmCapTheDocGia();
            frm.Show();
        }


        #endregion

        #region Cập Nhật Loại Đọc Giả

        private void bbi_Xemthongtindocgia_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmLoaiDocGia) return;
            var frm = new Catalog.FrmLoaiDocGia() { MdiParent = this };

            frm.Show();
        }

        #endregion

        #endregion

        #endregion

        #region Tra Cứu

        #region Thông tin sách
        private void bbi_ThongTinSach_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmBookInfo) return;
            var frm = new Catalog.FrmBookInfo() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #region Thông tin đọc giả
        private void bbi_ThongTinDocGia_ItemClick(object sender, ItemClickEventArgs e)
        {
            foreach (var x in MdiChildren) if (x is Catalog.FrmBorrowersInfo) return;
            var frm = new Catalog.FrmBorrowersInfo() { MdiParent = this };

            frm.Show();
        }
        #endregion

        #endregion

        #region Help!

        #region Hướng Dẫn Sử Dụng

        #endregion

        #region Thông Tin Phần Miền

        private void bbi_Thongtinphanmem_ItemClick(object sender, ItemClickEventArgs e)
        {
           Help.FrmThongTinPhanMem frm = new Help.FrmThongTinPhanMem();
            frm.Show();
        }

        #endregion

        #endregion

        #endregion

    }
}
